1. The Field of the Invention
This invention relates to operating systems for computers of a multi-processor type and, more particularly, to novel systems and methods for providing schedulers within such operating systems.
2. The Background Art
An operating system is software to be executed by a processor of a computer. A multi-processing operating system operates to facilitate operation of multiple processors, usually in a single computer. A multi-processor operating system may be relied upon by executables, such as applications, library routines, and the like, in order to determine an order of execution for each executable.
An operating system provides an interface between the hardware or processor and its associated components, and a higher level executable such as an application. Thus, an operating system provides services to an application by communicating to the hardware on behalf of the higher level application.
Within an operating system, a kernel provides a scheduling function. In general, a kernel is sometimes defined as including not only scheduling software but also memory-management functions, interrupt services, and the like. It is also proper to speak of the scheduling kernel as the kernel or the scheduler, as will be done herein.
Currently known scheduling kernels are not architected to manage effectively, efficiently, nor completely satisfactorily. Many problems arise in scheduling multiple processes, programs, or applications, each having multiple threads.
For example, a thread may run on one processor, while at another time the same thread runs on a second processor. This may result in certain supporting data being moved between caches associated with the two different processors. Coordinating, updating, synchronizing, controlling, passing and validating instances of data structures (e.g. objects) may result in cache thrashing.
Cache thrashing may be thought of as wasting inordinate amounts of valuable processing time administering the coordination of necessary data structures. Scheduling procedures often result in cache thrashing in multi-processor schedulers.